/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.compassion.util;

/**
 *
 * @author geovany
 */

/**
 *
 * @author geovany
 */
public class Encriptar {
	private static String alfabeto = "abcdefghijklmnopqrstuvwxyz0123456789";
	/*private String clave="";//clave para encriptar
	private String cadena="";//cadena con el mensaje a encriptar
	private String cad1="";//cadena desencriptada
	private String cad2="";//cadena encriptada*/
        private static String clave = "compassion";
	public Encriptar(){
		//this.alfabeto = "abcdefghijklmnopqrstuvwxyz0123456789";//ABCDEFGHIJKLMNOPQRSTUVWXYZ  abcdefghijklmnopqrstuvwxyz
		/*this.cadena = cadena.toLowerCase();
		this.clave = clave.toLowerCase();	*/	
	}
	
	public int validarClave(String clave){
		int i=0;
		if(clave.length()<4 || clave.length()>8) return 0;
		else
			while(i<clave.length()){
				if(Character.isLetter(clave.charAt(i))) i++;
				else return 0;
			}
		return 1;
	}
	public static String desencriptar(String cadenaE){
		int i=0,lcla=0,j=0;
		int valorCadena=0,valorClave=0,total;
                String cad1 = "";
		lcla=clave.length();
                if(cadenaE == null){ return cadenaE;
                }else{
                    while(i<cadenaE.length()){
                            if(cadenaE.charAt(i)==' '){//verifico si es espacion en blanco
                                    cad1=cad1+' ';
                                    i++;
                            }
                            else{
                                    if(!Character.isLetter(cadenaE.charAt(i))){//verifico si no es letra
                                            cad1=cad1+cadenaE.charAt(i);
                                            i++;
                                    }
                                    else{
                                            if(Character.isDigit(cadenaE.charAt(i))){//verifico si es simbolo
                                                    cad1=cad1+cadenaE.charAt(i);
                                                    i++;
                                            }
                                            else{//si es letra encripto
                                                    valorCadena=alfabeto.indexOf((int)cadenaE.charAt(i));
                                                    valorClave=alfabeto.indexOf((int)clave.charAt(j%lcla));
                                                    i++;
                                                    j++;
                                                    total=(valorCadena-valorClave+alfabeto.length())%alfabeto.length();
                                                    cad1=cad1+alfabeto.charAt(total);
                                            }
                                    }

                            }
                    }
                }
                return cad1;
	}
	
	public static String encriptador(String cadena){
		int i=0,lcla=0,j=0;
		int valorCadena=0,valorClave=0,total;
		lcla=clave.length();
                String cad2 = "";
		cadena=cadena.toLowerCase();
		while(i<cadena.length()){
			if(cadena.charAt(i)==' '){//verifico si es espacion en blanco
				cad2=cad2+' ';
				i++;
			}
			else{
				if(!Character.isLetter(cadena.charAt(i))){//verifico si no es letra
					cad2=cad2+cadena.charAt(i);
					i++;
				}
				else{
					if(Character.isDigit(cadena.charAt(i))){//verifico si es simbolo
						cad2=cad2+cadena.charAt(i);
						i++;
					}
					else{//si es letra encripto
						valorCadena=alfabeto.indexOf((int)cadena.charAt(i));
						valorClave=alfabeto.indexOf((int)clave.charAt(j%lcla));
						i++;
						j++;
						total=(valorCadena+valorClave)%alfabeto.length();
						cad2=cad2+alfabeto.charAt(total);
					}
				}
			}
		}
                return cad2;
	}
	
	public String getAlfabeto() {
		return alfabeto;
	}
	public void setAlfabeto(String alfabeto) {
		this.alfabeto = alfabeto;
	}

}
